home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / yacc / flexyacc / aflex.lha / aflex / src / alsys / file_managerB.a < prev    next >
Text File  |  1991-07-22  |  4KB  |  118 lines

  1. --------------------------
  2. -- file_managerB.a
  3. --------------------------
  4. -- Copyright (c) 1990 Regents of the University of California.
  5. -- All rights reserved.
  6. --
  7. -- This software was developed by John Self of the Arcadia project
  8. -- at the University of California, Irvine.
  9. --
  10. -- Redistribution and use in source and binary forms are permitted
  11. -- provided that the above copyright notice and this paragraph are
  12. -- duplicated in all such forms and that any documentation,
  13. -- advertising materials, and other materials related to such
  14. -- distribution and use acknowledge that the software was developed
  15. -- by the University of California, Irvine.  The name of the
  16. -- University may not be used to endorse or promote products derived
  17. -- from this software without specific prior written permission.
  18. -- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  19. -- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  20. -- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  21.  
  22. -- TITLE external_file_manager
  23. -- AUTHOR: John Self (UCI)
  24. -- DESCRIPTION opens external files for other functions
  25. -- NOTES This package opens external files, and thus may be system dependent
  26. --       because of limitations on file names.
  27. --       This version is for the VADS 5.5 Ada development system.
  28. -- $Header: /co/ua/self/arcadia/aflex/ada/src/RCS/file_managerB.a,v 1.5 90/01/12 15:19:58 self Exp Locker: self $ 
  29.  
  30. -- History
  31. -- 14-Jun-1991        Rolf EBERT    
  32. --    added body of Standard_Error.
  33. --    declaration of Ada_Suffix as a constant String.
  34.  
  35.  
  36. with MISC_DEFS, TSTRING, TEXT_IO, MISC; use MISC_DEFS, TSTRING, TEXT_IO, MISC; 
  37.  
  38. package body EXTERNAL_FILE_MANAGER is 
  39.  
  40. -- FIX comment about compiler dependent
  41.  
  42. --   subtype SUFFIX_TYPE is STRING(1 .. 1); 
  43. -- 
  44. --   function ADA_SUFFIX return SUFFIX_TYPE is 
  45. --   begin
  46. --     return "a"; 
  47. --   end ADA_SUFFIX; 
  48.  
  49.   Ada_Suffix : constant String := "a"; -- isn't it easier?
  50.  
  51.   Std_Err : File_Type;
  52.  
  53.   function Standard_Error return File_Type is
  54.   begin
  55.       return Std_Err;
  56.   end Standard_Error;
  57.  
  58.  
  59.   procedure GET_IO_FILE(F : in out FILE_TYPE) is 
  60.   begin
  61.     if (LEN(INFILENAME) /= 0) then 
  62.       CREATE(F, OUT_FILE, STR(MISC.BASENAME) & "_io." & ADA_SUFFIX); 
  63.     else 
  64.       CREATE(F, OUT_FILE, "aflex_yy_io." & ADA_SUFFIX); 
  65.     end if; 
  66.   exception
  67.     when USE_ERROR | NAME_ERROR => 
  68.       MISC.AFLEXFATAL("could not create IO package file"); 
  69.   end GET_IO_FILE; 
  70.  
  71.   procedure GET_DFA_FILE(F : in out FILE_TYPE) is 
  72.   begin
  73.     if (LEN(INFILENAME) /= 0) then 
  74.       CREATE(F, OUT_FILE, STR(MISC.BASENAME) & "_dfa." & ADA_SUFFIX); 
  75.     else 
  76.       CREATE(F, OUT_FILE, "aflex_yy_dfa." & ADA_SUFFIX); 
  77.     end if; 
  78.   exception
  79.     when USE_ERROR | NAME_ERROR => 
  80.       MISC.AFLEXFATAL("could not create DFA package file"); 
  81.   end GET_DFA_FILE; 
  82.  
  83.   procedure GET_SCANNER_FILE(F : in out FILE_TYPE) is 
  84.     OUTFILE_NAME : VSTRING; 
  85.   begin
  86.     if (LEN(INFILENAME) /= 0) then 
  87.  
  88.       -- give out infile + ada_suffix
  89.       OUTFILE_NAME := MISC.BASENAME & "." & ADA_SUFFIX; 
  90.     else 
  91.       OUTFILE_NAME := VSTR("aflex_yy." & ADA_SUFFIX); 
  92.     end if; 
  93.  
  94.     CREATE(F, OUT_FILE, STR(OUTFILE_NAME)); 
  95.     SET_OUTPUT(F); 
  96.   exception
  97.     when NAME_ERROR | USE_ERROR => 
  98.       MISC.AFLEXFATAL("can't create scanner file " & OUTFILE_NAME); 
  99.   end GET_SCANNER_FILE; 
  100.  
  101.   procedure GET_BACKTRACK_FILE(F : in out FILE_TYPE) is 
  102.   begin
  103.     CREATE(F, OUT_FILE, "aflex.backtrack"); 
  104.   exception
  105.     when USE_ERROR | NAME_ERROR => 
  106.       MISC.AFLEXFATAL("could not create backtrack file"); 
  107.   end GET_BACKTRACK_FILE; 
  108.  
  109.   procedure Initialize_Files is 
  110.   begin
  111.     Create(Std_Err, Out_File, "/dev/tty"); 
  112.   exception
  113.     when Use_Error | Name_Error => 
  114.       Misc.Aflexfatal("could not create standard_error as /dev/tty"); 
  115.   end Initialize_Files; 
  116.  
  117. end EXTERNAL_FILE_MANAGER; 
  118.